package gsw.tool.pluggable.hook.handler;

import android.content.pm.PackageInfo;


import java.lang.reflect.Method;
import java.util.Map;

/**
 * PackageManager的分发类:用来管理插件APK的安装、卸载等
 */
public class HandlerPackageManager extends BaseHandlerClass {

    /**
     * 初始化hookMethodHandles
     *
     * @param hookMethodHandles 所有的分发方法
     */
    @Override
    protected void init(Map<String, BaseHandlerMethod> hookMethodHandles) {
        hookMethodHandles.put("getPackageInfo", new GetPackageInfo());
    }

    /**
     * 对PackageManager的getPackageInfo()进行扩展
     */
    private static class GetPackageInfo extends BaseHandlerMethod {

        /**
         * 系统的方法执行前的操作
         *
         * @param receiver 系统对象
         * @param method   执行方法
         * @param args     执行方法的参数
         * @return 是否需要执行系统的方法
         */
        @Override
        protected boolean beforeInvoke(Object receiver, Method method, Object[] args) {
            PackageInfo packageInfo = new PackageInfo();
            setUserMyResult(packageInfo);
            return false;
        }
    }
}
